package exception;

import java.util.InputMismatchException;
import java.util.Scanner;

public class TestException {
    public static void divid() throws ArithmeticException,InputMismatchException{
        //可能会产生异常，没有能力处理异常声明抛出异常，交给上一级处理
        Scanner in = new Scanner(System.in);
        int number1;//被除数
        int number2;//除数
        System.out.println("输入被除数：");
        number1 = in.nextInt();
        System.out.println("输入除数：");
        number2 = in.nextInt();
        System.out.println(number1 + "/" + number2 + "=" + number1 / number2);

    }
    public static void main(String[] args) {

        int number=0;
        if(number==0){
            ArithmeticException exception = new ArithmeticException();
            throw exception;//抛出
        }


        try {
            divid();//调用divid进行除法运算,会有异常抛出
        }catch (ArithmeticException e){
            //处理异常
            e.printStackTrace();
        }catch (InputMismatchException e){
            e.printStackTrace();
        }

        System.out.println("程序继续执行");
        System.out.println("程序结束");

        /*
        Scanner in = new Scanner(System.in);
        int number1;//被除数
        int number2;//除数

        //方案1-代码多，结构乱
        System.out.println("输入被除数：");
        if (in.hasNextInt()) {
            //如果接下来键盘输入的是整型数
            number1 = in.nextInt();
            System.out.println("输入除数：");
            if (in.hasNextInt()) {
                number2 = in.nextInt();
                if(number2!=0){
                    System.out.println(number1 + "/" + number2 + "=" + number1 / number2);
                }
            }
        }


        //方案2-使用try…catch语句对异常进行捕获处理
        try {
            System.out.println("输入被除数：");
            number1 = in.nextInt();
            System.out.println("输入除数：");
            number2 = in.nextInt();
            System.out.println(number1 + "/" + number2 + "=" + number1 / number2);
        }catch (ArithmeticException e){
            //异常的处理
            System.out.println("捕获到算数运算的异常");
            e.printStackTrace();
        }catch (InputMismatchException e){
            //异常的处理
            System.out.println("捕获到类型不匹配的异常");
            e.printStackTrace();
        }finally {
            //不管是否有异常，是否捕获到异常，都会执行的代码
            System.out.println("程序继续执行");
        }
        System.out.println("程序结束");
    */
        //方案3-暂时不处理异常，向上抛出异常，让上一级处理异常，调用本方法的上一级方法
        //方法，A方法调用方法B
        //考勤，----任课教师
        //同学发烧---任课教师无法处理异常，向上抛出异常（报告学院）


    }



}
